%module OrderedDictModule

%import "LibDL/global_typemaps.i"

%import "LibDL/ordered_dict/dict_item.i"
%import "LibDL/ordered_dict/boost_any_wrapper.i"

SWIG_JAVABODY_PROXY(public, public, SWIGTYPE)
SWIG_JAVABODY_TYPEWRAPPER(public, public, public, SWIGTYPE)

%{
#include "./LibDL/ordered_dict/ordered_dict.h"
#include "./LibDL/ordered_dict/boost_any_wrapper.h"
#include "./LibDL/Tensor/Tensor.h"
#include <boost/any.hpp>
#include <boost/stacktrace.hpp>
%}

%include "./LibDL/ordered_dict/ordered_dict.h"
%ignore operator[];
%ignore get_core();

%template(OrderedDictStrStr) Ordered_dict<std::string, std::string>;
%template(OrderedDictStrTensor) Ordered_dict<std::string, Tensor>;
%template(OrderedDict) Ordered_dict<std::string, any_wrapper>;
%template(AnyList) std::vector<any_wrapper>;

